package com.ksm.zyz.common.base;

import java.util.List;
import java.util.Map;


/**
 * 基础mapper接口
 * @author liuhao
 *
 * @param <T>
 * @param <E>
 */
public interface BaseMapper<T> {
	
	/**
	 * 对对象持久化操作，如果成功则返回持久化后的ID
	 * 失败则返回NULL
	 * @param obj
	 * @rentrn
	 */
	 int save(T obj);
	
	/**
	 * 删除指定ID的持久化对象
	 * @param ids
	 */
	 int delete(String[] ids);
	
	/**
	 * 修改指定的持久化对象
	 * @param obj
	 */
	 int update(T obj);
	/**
	 * 根据ID查询
	 * @param id
	 * @return
	 */
	 T selectById(String id);
	
	
	 /**
	  * 新增根据多个字段值查询全部(同selectAll)-前台接口用
	  * @param obj
	  */
	 List<T> selectByFields(T obj);
	 
	 /**
	  * 无条件查询全部-前台接口用
	  */
	 List<T> selectAllList();
	 
	 /**
	  * 根据条件查询全部-后台管理用
	  */
	 List<T> selectAll(T obj);
	 
	
	
	/**
	 * 改变指定字段的状态
	 * @param map
	 */
	 int change(Map<String, Object> map);
	 
	 /**
		 * 查询总的记录数
		 * @param 使用
		 */
		 Integer sysselectCount(T obj);
	 /**
		 * 查询总的记录数
		 * @param 使用
		 */
		Integer selectCount(int smId);
	 /**
		 * 插入数据
		 * @param int
		 */ 
	 
	 int insert(T obj);

	 int insertSelective(T obj);
	 /**
		 * 查看未同步的数据list
		 * @param 使用
		 */	 
	 List<T> selectAllNew(int ustate);
	 /**     
		 * 删除总数据库中的数据
		 * @param ids
		 */
    int deleteInfo(T obj);
    /**
	 * 修改总数据库中的数据
	 * @param ids
	 */
     int updateInfo(T obj);
     /**
		 * 修改sqlserver数据库中的状态
		 * @param 
		 */
     
    int updateState(int state);
    /**
		 * 查询对象
		 * @param obj
		 */
 T selectInfo(T obj);
    /**
	 * 查看表中有无数据
	 * @param 
	 */
    int selectInfoCount(T obj);
    /**20170416
	 * 查看总数据库中一个超市未同步的数据
	 * @param 
	 */
    List<T> selectSmIdnew(T obj);
    /**20170416
  	 * 修改总数据库中一个超市未同步的数据的状态改为已经同步
  	 * @param 
  	 */
      List<T> selectSmIdnewstate(T obj);
    
    
    
}
